package br.com.vilababy.sigvb.modelo;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

import br.com.vilababy.sigvb.constantes.RelacaoEnum;

@Entity
public class Responsavel extends SIGVBModelo implements Serializable {

	/**
	 * @author Diego Patrick da Silva Santos
	 */
	private static final long serialVersionUID = 1L;
	
	@Id @GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="codigo_responsavel")
	private Long id;
	@Column(name="responsavel_financeiro", nullable=true)
	private Boolean responsavelFinanceiro;
	private RelacaoEnum relacao;
	@ManyToOne(optional=false)
	@JoinColumn(name="aluno_codigo_aluno", nullable=false)
	private Aluno aluno;
	@OneToOne
	@JoinColumn(name="endereco_codigo_endereco", nullable=true)
	@Cascade(value=CascadeType.MERGE)
	private Endereco endereco;
	@OneToOne
	@JoinColumn(name="contato_codigo_contato", nullable=true)
	@Cascade(value=CascadeType.ALL)
	private Contato contato;
	@OneToOne
	@JoinColumn(name="documentacao_pessoal_codigo_documentacao", nullable=true)
	@Cascade(value=CascadeType.ALL)
	private DocumentacaoPessoal documentacao;
	@Column(length=180, nullable=false)
	private String nome;
	@Column(name="anotacao_boleto")
	private String anotacaoBoleto;
	@OneToMany(mappedBy="responsavel")
	private List<Pagamento> pagamentos;
	
	
	public final Long getId() {
		return id;
	}
	public final void setId(Long id) {
		this.id = id;
	}
	public final String getNome() {
		return nome;
	}
	public final void setNome(String nome) {
		this.nome = nome;
	}
	public final Boolean getResponsavelFinanceiro() {
		return responsavelFinanceiro;
	}
	public final void setResponsavelFinanceiro(Boolean responsavelFinanceiro) {
		this.responsavelFinanceiro = responsavelFinanceiro;
	}
	public final String getAnotacaoBoleto() {
		return anotacaoBoleto;
	}
	public final void setAnotacaoBoleto(String anotacaoBoleto) {
		this.anotacaoBoleto = anotacaoBoleto;
	}
	public final RelacaoEnum getRelacao() {
		return relacao;
	}
	public final void setRelacao(RelacaoEnum relacao) {
		this.relacao = relacao;
	}
	public final Aluno getAluno() {
		return aluno;
	}
	public final void setAluno(Aluno aluno) {
		this.aluno = aluno;
	}
	public final Endereco getEndereco() {
		return endereco;
	}
	public final void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}
	public final Contato getContato() {
		return contato;
	}
	public final void setContato(Contato contato) {
		this.contato = contato;
	}
	public final DocumentacaoPessoal getDocumentacao() {
		return documentacao;
	}
	public final void setDocumentacao(DocumentacaoPessoal documentacao) {
		this.documentacao = documentacao;
	}
	public final List<Pagamento> getPagamentos() {
		return pagamentos;
	}
	public final void setPagamentos(List<Pagamento> pagamentos) {
		this.pagamentos = pagamentos;
	}
	
}
